﻿using System;

namespace 备忘录模式
{
    class Program
    {
        //备忘录模式 个人理解：
        //    首次实例化的学生类，赋值给一个中间类，用中间类来保存之前的数据
        //    在需要的时候，在把之前保存的数据还原回学生类
        //    State类，是Student的相同类，用来保存数据
        //    Memento类，是中间类用，构造函数注入State类
        //    CareTaker类，是用来管理备忘录信息的类，用来实例化，同时隔离了

        static void Main(string[] args)
        {
            //实例化类
            Student s = new Student("李阳",20,"男");

            //创建备忘录的管理者
            CareTaker c = new CareTaker();
            //把学生类的数据赋值给管理者
            c.Memento = s.CreateMemnto();
            //输出学生实例化的信息
            Console.WriteLine(s);

            //更改学生信息
            s.Name = "紫萱";
            s.Age = 18;
            s.Sex = "女";
            Console.WriteLine(s);

            //还原状态
            s.SetStudent(c.Memento);
            Console.WriteLine(s);

            Console.ReadKey();

        }
    }
}
